package com.dragon.mmochat.model.enumType;

import java.awt.Color;
import java.util.ArrayList;
import java.util.List;

import com.dragon.mmochat.MmochatConstant;
import com.dragon.mmochat.util.MmochatUtil;

//注：一旦发版,如果此enum会存到数据库，则此类型只能增加,不能减少或修改名字
public enum MmochatDrugType implements MmochatCommonObjectType {
	// --血药
	活血草(1, MmochatConstant.BMP_DRUG_1, 320, 0, "一种野生的药草、有少许治疗效果!\n补血:320", 10),

	补血丸(2, MmochatConstant.BMP_DRUG_2, 800, 0, "草药精炼而成，可回复一定量的生命值!\n补血:800", 30),

	千年人参(3, MmochatConstant.BMP_DRUG_3, 1600, 0,
			"名贵药材提炼而成，功效明显，可回复大量生命!\n补血:1600", 70),

	人参果(4, MmochatConstant.BMP_DRUG_4, 3200, 0,
			"世间名贵草药，芳香馥郁，入口甘甜，可瞬间治疗创伤!\n补血:3200", 150),

	四生丸(5, MmochatConstant.BMP_DRUG_5, 8000, 0,
			"四生丸中三般叶，侧柏艾叶荷叶兼，生地合用为丸服，血热吐淤效可验，补血之良药!\n补血:8000", 400),

	小蓟饮子(6, MmochatConstant.BMP_DRUG_6, 20000, 0,
			"小蓟饮子藕蒲黄，木通滑石生地襄，归草黑栀淡竹叶，血淋热结服之良，补血之良药!\n补血:20000", 900),

	还魂丹(7, MmochatConstant.BMP_DRUG_7, 30000, 0,
			"采集天下九十九种珍稀名贵药材，经过九九八十一天的炼化而成的回血仙药，补血之良药!\n补血:30000", 1500),

	// --法药
	甘湿草(8, MmochatConstant.BMP_DRUG_8, 0, 200,
			"江南著名草药，茎叶均可入药，可少量补气回力!\n补法:200", 10),

	补气丹(9, MmochatConstant.BMP_DRUG_9, 0, 500,
			"北方地区高山之中的天然草药，可补充一定的气力!\n补法:500", 30),

	越鞠丸(10, MmochatConstant.BMP_DRUG_10, 0, 1000,
			"越鞠丸治六般郁，气血痰火食湿因，芎苍香附兼栀曲，气畅郁舒痛闷伸，补气之良药!\n补法:1000", 70),

	菩提果(11, MmochatConstant.BMP_DRUG_11, 0, 2000,
			"皮色殷红如血，皮面光滑明亮，味道芬芳甘美。四百年一开花，四百年一结果，常人服食一枚，能够龙马精神\n补法:2000", 150),

	九仙散(12, MmochatConstant.BMP_DRUG_12, 0, 5000,
			"以人参、款冬花、桑白皮、桔梗、五味子、阿胶、贝母、罂粟壳等秘药炼制而成，补气之良药!\n补法:5000", 400),

	聚灵丹(13, MmochatConstant.BMP_DRUG_13, 0, 10000,
			"得道圣贤潜心闭关修炼之仙丹，吸取天地之灵气，补气之良药!\n补法:10000", 900);

	int value;
	int blood; // 加血量
	int sprit; // 加灵量
	int bmpId;
	int price = 100; // 商店售价
	String info;

	MmochatDrugType(int value, int bmpId, int blood, int sprit, String info,
			int price) {
		this.value = value;
		this.bmpId = bmpId;
		this.blood = blood;
		this.sprit = sprit;
		this.info = info;
		this.price = price;
	}

	public static MmochatDrugType get(int value) {
		for (MmochatDrugType type : MmochatDrugType.values()) {
			if (type.getValue() == value) {
				return type;
			}
		}
		return null;
	}

	public int getBmpId() {
		return bmpId;
	}

	public void setBmpId(int bmpId) {
		this.bmpId = bmpId;
	}

	public int getValue() {
		return value;
	}

	public void setValue(int value) {
		this.value = value;
	}

	public int getBlood() {
		return blood;
	}

	public void setBlood(int blood) {
		this.blood = blood;
	}

	public int getSprit() {
		return sprit;
	}

	public void setSprit(int sprit) {
		this.sprit = sprit;
	}

	public String getInfo() {
		return info;
	}

	public void setInfo(String info) {
		this.info = info;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	public String getSellInfo() {
		String sellInfo;
		sellInfo = MmochatUtil.wrapColor(this.toString(),
				new Color(211, 165, 6));
		sellInfo += "\n" + getInfo();
		sellInfo += MmochatUtil.wrapColor("\n" + "售价:" + price + "文",
				new Color(232, 166, 10));
		return sellInfo;
	}

	public static List<MmochatDrugType> getDrugListByLevel(
			MmochatNpcItemType type) {
		List<MmochatDrugType> list = new ArrayList<MmochatDrugType>();
		switch (type) {
		case 购买初级药品:
			// 初级药品
			list.add(活血草);
			list.add(补血丸);
			list.add(千年人参);
			list.add(人参果);
			list.add(四生丸);

			list.add(甘湿草);
			list.add(补气丹);
			list.add(越鞠丸);
			list.add(菩提果);
			break;
		case 购买中级药品:
			// 中级药品
			list.add(千年人参);
			list.add(人参果);
			list.add(四生丸);
			list.add(小蓟饮子);

			list.add(越鞠丸);
			list.add(菩提果);
			list.add(九仙散);
			break;
		case 购买高级药品:
			// 高级药品
			list.add(人参果);
			list.add(四生丸);
			list.add(小蓟饮子);
			list.add(还魂丹);

			list.add(菩提果);
			list.add(九仙散);
			list.add(聚灵丹);
			break;
		default:
			break;
		}
		return list;
	}

	public static MmochatDrugType getRandomDrug(int myLevel) {
		try {
			MmochatNpcItemType drugLevel;
			if (myLevel < 30) {
				drugLevel = MmochatNpcItemType.购买初级药品;
			} else if (myLevel < 80) {
				drugLevel = MmochatNpcItemType.购买中级药品;
			} else {
				drugLevel = MmochatNpcItemType.购买高级药品;
			}
			List<MmochatDrugType> list = getDrugListByLevel(drugLevel);

			int count = list.size();
			if (count == 0) {
				return MmochatDrugType.活血草;
			}
			int index = MmochatUtil.getRandomValue(count);
			return list.get(index);
		} catch (Exception e) {
			return MmochatDrugType.活血草;
		}

	}
}
